home *** CD-ROM | disk | FTP | other *** search
- Path: xanth!cs.odu.edu!Amiga-Request
- From: Amiga-Request@cs.odu.edu (Amiga Sources/Binaries Moderator)
- Newsgroups: comp.sources.amiga
- Subject: v90i090: Qt - what time is it toy, Part01/01
- Message-ID: <11614@xanth.cs.odu.edu>
- Date: 3 Mar 90 21:04:21 GMT
- Sender: tadguy@cs.odu.edu
- Reply-To: mjl@alison.at (Martin J. Laubach)
- Lines: 575
- Approved: tadguy@cs.odu.edu (Tad Guy)
- X-Mail-Submissions-To: Amiga@cs.odu.edu
- X-Post-Discussions-To: comp.sys.amiga
-
- Submitted-by: mjl@alison.at (Martin J. Laubach)
- Posting-number: Volume 90, Issue 090
- Archive-name: util/qt
-
- [ uuencoded binary enclosed. ...tad ]
-
- This is one of my favorite toys -- though it's only about 400
- bytes, it's a working "can anybody tell me what time it is?"
- tool. Perfect for anybody's startup-sequence.
-
- #!/bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of archive 1 (of 1)."
- # Contents: Makefile qt.asm qt.doc qt.uu
- # Wrapped by tadguy@xanth on Sat Mar 3 16:04:11 1990
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'Makefile' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'Makefile'\"
- else
- echo shar: Extracting \"'Makefile'\" \(187 characters\)
- sed "s/^X//" >'Makefile' <<'END_OF_FILE'
- XALL = qt
- XOBJ = qt.o
- XLFLAGS = sc sd nd verbose
- XINCLUDE = inc:include.i
- X
- X
- X$(ALL): $(OBJ)
- X blink $(OBJ) $(LFLAGS) lib lib:amiga.lib
- X
- Xqt.o: qt.asm
- X casm -a qt.asm -o qt.o -c v -i $(INCLUDE)
- END_OF_FILE
- if test 187 -ne `wc -c <'Makefile'`; then
- echo shar: \"'Makefile'\" unpacked with wrong size!
- fi
- # end of 'Makefile'
- fi
- if test -f 'qt.asm' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'qt.asm'\"
- else
- echo shar: Extracting \"'qt.asm'\" \(3761 characters\)
- sed "s/^X//" >'qt.asm' <<'END_OF_FILE'
- X; Qt -- What time is it?
- X;
- X; Original version (c) 1989 by Martin Laubach
- X; Heavy modifications (c) Jim Butterfield Jan 31, 1990
- X; Beautified by mjl
- X;
- X; :ts=12
- X
- X include "exec/types.i"
- X include "libraries/dos.i"
- X
- X optimon
- X
- X;-----------------------------------------------------------------
- Xcall macro
- X xref _LVO\1
- X jsr _LVO\1(a6)
- X endm
- X
- Xvector macro
- X dc.b \1-Hr12
- X endm
- X
- X;-----------------------------------------------------------------
- X; Local variables
- X
- XLocal_SIZE: equ ds_SIZEOF ; I need a local DateStamp
- X
- XToday: equ -Local_SIZE
- X
- X;-----------------------------------------------------------------
- X section Qt,code
- X
- XMain: link a4,#-Local_SIZE
- X
- X move.l 4,a6
- X
- X lea DosName(pc),a1
- X moveq #33,d0
- X call OpenLibrary
- X move.l d0,a6
- X
- X call Output
- X move.l d0,a5
- X
- X lea Today(a4),a0
- X move.l a0,d1
- X call DateStamp
- X
- X move.l Today+ds_Minute(a4),d6
- X moveq #27,d7
- X add.l d7,d6
- X
- X divu #60,d6
- X move.w d6,d7 ; hours (quotient)
- X
- X moveq #12,d4
- X divu d4,d7 ;
- X
- X clr.w d7
- X swap d7 ; hours (0-11)
- X
- X clr.w d6
- X swap d6 ; mins (remainder)
- X
- X moveq #It.vec-Hr.vecs,d0
- X bsr.s PutStr
- X
- X divu #5,d6 ; clock divisions
- X swap d6 ; 'almost' adjustment
- X moveq #Ny.vecs-Hr.vecs,d0
- X add.w d6,d0
- X bsr.s PutStr
- X
- X swap d6 ; clock divisions
- X moveq #Ps.vec-Hr.vecs,d5
- X subq.w #5,d6 ; adjust to hour
- X beq.s Exact
- X bpl.s GotToP
- X
- X moveq #To.vec-Hr.vecs,d5
- X neg.w d6
- X
- XGotToP: moveq #Ft.vecs-Hr.vecs,d0
- X add.w d6,d0
- X bsr.s PutStr
- X
- X move.l d5,d0
- X bsr.s PutStr
- X
- XExact: moveq #Hr.vecs-Hr.vecs,d0
- X add.w d7,d0
- X bsr.s PutStr
- X
- X moveq #OC.vec-Hr.vecs,d0
- X tst.w d6
- X bne.s NoOclk
- X bsr.s PutStr
- X
- XNoOclk: lea NewLine.CHR(pc),a3
- X bsr.s Prt1
- X
- X
- X move.l a6,a1
- X move.l 4,a6
- X call CloseLibrary
- X
- X unlk a4
- X rts
- X
- X;-----------------------------------------------------------------
- X; Print item from table (Hr.vecs)
- X; D0 = String number
- X; -->
- X; Nil
- X
- XPutStr: lea Hr.vecs(pc),a0
- X moveq #0,d2
- X moveq #0,d3
- X
- X move.b 0(a0,d0.w),d2 ; Get buffer offset
- X move.b 1(a0,d0.w),d3 ; Get next item offset
- X sub.w d2,d3 ; Length of string
- X
- X beq.s Exit ; No string
- X
- X lea Hr12(pc),a3 ; Begin of string table
- X add.l a3,d2 ; Begin of string
- X
- X;-----------------------------------------------------------------
- X; Print something + space
- X; D2 = Pointer to something
- X; D3 = Length of something
- X; -->
- X; Nil
- X
- XPrtItem: bsr.s Put1
- X
- X lea Space.CHR(pc),a3
- X
- XPrt1: move.l a3,d2
- X moveq #1,d3
- X
- XPut1: move.l a5,d1 ; handle
- XGotstr: call Write
- X
- XExit: moveq #0,d0
- X rts
- X
- X
- X;-----------------------------------------------------------------
- X; String vector table
- X
- XHr.vecs: vector Hr12
- X vector Hr01
- X vector Hr02
- X vector Hr03
- X vector Hr04
- X vector Hr05
- X vector Hr06
- X vector Hr07
- X vector Hr08
- X vector Hr09
- X vector Hr10
- XFt.vecs: vector Hr11
- X vector Mn05
- X vector Mn10
- X vector Mn15
- X vector Mn20
- X vector Mn25
- X vector Mn30
- XNy.vecs: vector nearly
- X vector almost
- X vector justpast
- X vector justpast
- X vector after
- XIt.vec: vector Itis
- XPs.vec: vector Past
- XTo.vec: vector UpTo
- XOC.vec: vector OClock
- X vector Space.CHR
- X
- X;-----------------------------------------------------------------
- X; Strings
- X
- XHr12: dc.b 'twelve'
- XHr01: dc.b 'one'
- XHr02: dc.b 'two'
- XHr03: dc.b 'three'
- XHr04: dc.b 'four'
- XHr05: dc.b 'five'
- XHr06: dc.b 'six'
- XHr07: dc.b 'seven'
- XHr08: dc.b 'eight'
- XHr09: dc.b 'nine'
- XHr10: dc.b 'ten'
- XHr11: dc.b 'eleven'
- XMn05: dc.b 'five'
- XMn10: dc.b 'ten'
- XMn15: dc.b 'a quarter'
- XMn20: dc.b 'twenty'
- XMn25: dc.b 'twenty-five'
- XMn30: dc.b 'half'
- Xnearly: dc.b 'nearly'
- Xalmost: dc.b 'almost'
- Xjustpast: dc.b 'just after'
- Xafter: dc.b 'after'
- XItis: dc.b 'It''s'
- XPast: dc.b 'past'
- XUpTo: dc.b 'to'
- XOClock: dc.b 'o''clock'
- XSpace.CHR: dc.b ' '
- XNewLine.CHR: dc.b 10
- XDosName: dc.b 'dos.library',0
- X
- X end
- X
- END_OF_FILE
- if test 3761 -ne `wc -c <'qt.asm'`; then
- echo shar: \"'qt.asm'\" unpacked with wrong size!
- fi
- # end of 'qt.asm'
- fi
- if test -f 'qt.doc' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'qt.doc'\"
- else
- echo shar: Extracting \"'qt.doc'\" \(5132 characters\)
- sed "s/^X//" >'qt.doc' <<'END_OF_FILE'
- X
- X
- X Page 1 Qt's Documentation Page 1
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X Qt
- X (c) Copyright 1989 by Martin J. Laubach
- X (c) Copyright 1990 by Jim Butterfield
- X All rights reserved
- X
- X
- X
- X
- X
- X
- X
- X
- X 1. Introduction
- X
- X This is one of my favorite toys -- though it's only about 400
- X bytes, it's a working "can anybody tell me what time it is?"
- X tool. Perfect for anybody's startup-sequence.
- X
- X 2. Internals
- X
- X 2.1. Background
- X
- X Please don't yell at me because you don't like the look of the
- X source -- I know I do some not-so-nice things (like putting data
- X in the code hunk). It was my explicit aim to shorten the
- X program as much as possible, so I might not always have used the
- X most elegant solution. However, this version is much more
- X elegant than my first one -- kudos to Jim Butterfield.
- X
- X 2.2. History
- X
- X It all began when I saw a similar tool on a PC (shame on me).
- X I really loved it. So I tried to implement it in C -- the first
- X version had about 4K. I really didn't like that since the PC
- X version had only 512 bytes. So I began rewriting it in
- X assembler, and after some code bumming, I ended up with 408
- X bytes. I then posted it to alt.sources.amiga, and, though I
- X thought my code pretty dense, I got mail from Jim Butterfield,
- X telling me he succeeded in shortening the code -- with, at the
- X
- X
- X Internals History
- X
- X
- X Page 2 Qt's Documentation Page 2
- X
- X
- X same time, making it pure, more readable, and not
- X self-modifying. He really had an interesting idea of how to
- X store and access the string table (see the code), an idea I
- X would never had thought about.
- X
- X 2.3. Challenge
- X
- X We are now down at a whopping 392 bytes. See if you can do
- X better!
- X
- X 3. What
- X
- X In this archive, you should find the following files:
- X
- X qt.doc .... What you are reading right now.
- X qt.asm .... The source for rm.
- X makefile .. Guess what.
- X qt ........ The executable
- X
- X 4. Where
- X
- X If you have any comments, ideas what could or should be
- X improved, bug reports or just like to chat a bit, please feel
- X free to contact me at one of the following addresses... I just
- X *love* receiving mail!
- X
- X Usenet: mjl@alison.at
- X ..!uunet!mcsun!tuvie!alison!mjl
- X
- X or
- X
- X FidoNet: "Martin Laubach" at 2:310/3.14
- X
- X
- X Looking forward to reading from you,
- X
- X mjl
- X
- X
- X Jim Butterfield, who did not a small part of this, can also be
- X reached on Usenet:
- X
- X jb@cbmtor.uucp
- X ..!uunet!cbmtor!jb.
- X
- X
- X
- X 5. License
- X
- X This material is (c) Copyright 1989 by Martin J. Laubach and (c)
- X Copyright 1990 by Jim Butterfield -- All rights reserved.
- X
- X It may be distributed freely as long as the following
- X restrictions are met:
- X
- X
- X License
- X
- X
- X Page 3 Qt's Documentation Page 3
- X
- X
- X
- X The distributor may charge a fee to recover distribution
- X costs. The fee for diskette distribution should not be more than
- X the cost to obtain the same diskette from Fred Fish.
- X
- X The distributor agrees to cease distributing the programs and
- X data involved if requested to do so by the author.
- X
- X You may copy and distribute verbatim copies of the program's
- X executable code and documentation as you receive it, in any
- X medium, provided that you conspicuously and appropriately
- X publish only the original, unmodified program, with all
- X copyright notices and disclaimers of warranty intact and
- X including all the accompanying documentation, example files and
- X anything else that came with the original.
- X
- X The author will not be liable for any damage arising from the
- X failure of this program to perform as described, or any
- X destruction of other programs or data residing on a system
- X attempting to run the program. While I know of no damaging
- X errors, the user of this program uses it at his or her own
- X risk.
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X License
- X
- X
- X Page 4 Qt's Documentation Page 4
- X
- X
- X 6. Road Map
- X
- X
- X
- X 1. Introduction .................................... 1
- X 2. Internals ....................................... 1
- X 2.1. Background ................................... 1
- X 2.2. History ...................................... 1
- X 2.3. Challenge .................................... 2
- X 3. What ............................................ 2
- X 4. Where ........................................... 2
- X 5. License ......................................... 2
- X 6. Road Map ......................................... 4
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X Road Map
- X
- END_OF_FILE
- if test 5132 -ne `wc -c <'qt.doc'`; then
- echo shar: \"'qt.doc'\" unpacked with wrong size!
- fi
- # end of 'qt.doc'
- fi
- if test -f 'qt.uu' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'qt.uu'\"
- else
- echo shar: Extracting \"'qt.uu'\" \(580 characters\)
- sed "s/^X//" >'qt.uu' <<'END_OF_FILE'
- Xbegin 664 qt
- XM```#\P`````````!``````````````!9```#Z0```%E.5/_T+'@`!$/Z`4YP.
- XM(4ZN_=@L0$ZN_\0J0$'L__0B"$ZN_T`L+/_X?AO<AXS\`#P^!G@,CL1"1TA'-
- XM0D9(1G`784:,_``%2$9P$M!&83I(1GH86T9G$&H$>AE$1G`+T$9A)B`%82)P%
- XM`-!'81QP&DI&9@)A%$?Z`.%A+B).+'@`!$ZN_F).7$YU0?H`+'0`=@`4,```R
- XM%C```99"9Q9'^@`TU(MA"$?Z`+`D"W8!(@U.KO_0<`!.=0`&"0P1%1D<(28J$
- XM+3,W.D-)5%A>9&1N<W=[?81T=V5L=F5O;F5T=V]T:')E969O=7)F:79E<VEX(
- XM<V5V96YE:6=H=&YI;F5T96YE;&5V96YF:79E=&5N82!Q=6%R=&5R='=E;G1Y#
- XM='=E;G1Y+69I=F5H86QF;F5A<FQY86QM;W-T:G5S="!A9G1E<F%F=&5R270GF
- X@<W!A<W1T;V\G8VQO8VL@"F1O<RYL:6)R87)Y`````_)A9
- X``
- Xend
- Xsize 392
- END_OF_FILE
- if test 580 -ne `wc -c <'qt.uu'`; then
- echo shar: \"'qt.uu'\" unpacked with wrong size!
- fi
- # end of 'qt.uu'
- fi
- echo shar: End of archive 1 \(of 1\).
- cp /dev/null ark1isdone
- MISSING=""
- for I in 1 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have the archive.
- rm -f ark[1-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
- --
- Mail submissions (sources or binaries) to <amiga@cs.odu.edu>.
- Mail comments to the moderator at <amiga-request@cs.odu.edu>.
- Post requests for sources, and general discussion to comp.sys.amiga.
-